package com.qfmy.web.app.service.conmon;

import com.qfmy.model.query.novel.NovelQuery;
import com.qfmy.model.vo.novel.NovelVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author 清风明月
 * @Package com.qfmy.web.app.service.novel
 * @date 2025/10/31
 * @description 小说
 */
@SuppressWarnings("all")
public interface NovelService {

    /**
     * 获取热门小说
     * @param categoryId
     * @return
     */
    List<NovelVo> getHotNovels(Integer categoryId);

    /**
     * 获取排行榜
     * @return
     */
    List<NovelVo> getRank();

    /**
     *
     * @return
     */
    List<NovelVo> getFreeNovels();

    /**
     * 获取评分最高的小说
     * @return
     */
    List<NovelVo> getTop2ScoreNovels();

    /**
     * 获取热门小说
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<NovelVo> getHotEnd(Integer pageNum, Integer pageSize);

    /**
     * 获取今日必读
     * @return
     */
    List<NovelVo> getTodayMustRead();

    /**
     * 获取最新小说
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<NovelVo> getNewBooks(Integer pageNum, Integer pageSize);

    /**
     * 猜你喜欢
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<NovelVo> getGuessLike(Integer pageNum, Integer pageSize);

    /**
     * 获取新书严选
     * @return
     */
    List<NovelVo> getNewBooksYanXuan();

    /**
     * 获取精品新书
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<NovelVo> getJingPinNewBooks(Integer pageNum, Integer pageSize);

    /**
     * 获取免费小说
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<NovelVo> getNewFreeNovels(Integer pageNum, Integer pageSize);

    /**
     * 获取精品新书
     * @return
     */
    List<NovelVo> getJingXuanNewBooks();

    /**
     * 获取免费小说排行
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<NovelVo> getFreeRank(Integer pageNum, Integer pageSize);

    /**
     * 获取潜力新书
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<NovelVo> getPotentialNewBooks(@Param("pageNum") Integer pageNum, @Param("pageSize") Integer pageSize);

    /**
     * 获取小说排行
     *
     * @param pageNum
     * @param pageSize
     * @param type
     * @return
     */
    List<NovelVo> getRankByPage(Integer pageNum, Integer pageSize, String type);

    /**
     * 获取作者小说
     * @param authorName
     * @param novelId
     * @return
     */
    List<NovelVo> getNovelsByAuthorName(@Param("authorName") String authorName, @Param("novelId") Integer novelId);

    /**
     * 获取标签小说
     * @param novelQuery
     * @return
     */
    List<NovelVo> getNovelsByTagsPage(NovelQuery novelQuery);

    /**
     * 索引小说
     */
    void indexBooks();
}
